<template>
	<view class="orderfound">
		<button @click="wxpay">微信支付</button>
	</view>
</template>

<script>
	var jweixin;
	// #ifdef H5
	jweixin = require('jweixin-module')
	// #endif
	export default {
		data() {
			return {
				code: '',
				openid: ''
			}
		},
		onLoad(e) {
			let url = window.location.href.split('?')
			console.log(url);
			console.log(e);
			var str =
				"{\"appId\":\"wx1ad0a8e320c6bb98\",\"nonceStr\":\"clzsynhvgvqludwyi3ih4f3i4dmnl03n\",\"package\":\"prepay_id=wx01122425851573c0bdd4e2642569b10000\",\"signType\":\"MD5\",\"timeStamp\":\"1659327865\",\"paySign\":\"4278538028B1639CFB638962F9910FAA\"}";
			str = JSON.parse(str)
			console.log(str);
			setTimeout(() => {

				if (e.code) {
					// #ifdef H5
					this.wxconfig()
					// #endif

					console.log(e.code);
					this.code = e.code
					this.wxopenid()
				} else {
					this.wxcode()
				}
			}, 100)

		},
		methods: {
			wxconfig() {
				uni.request({
					url: 'http://www.huanlegougs.com/api.php/Test3/wxconfig',
					data: {
						url: location.href.split('#')[0]
					},
					success: (res) => {
						console.log('配置', res);
						let param = res.data.data
						jweixin.config({
							debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印。
							appId: param.appid, // 必填，公众号的唯一标识
							timestamp: param.timeStamp, // 必填，生成签名的时间戳
							nonceStr: param.nonceStr, // 必填，生成签名的随机串
							signature: param.signature, // 必填，签名
							jsApiList: [ //这里是需要用到的接口名称  
								'checkJsApi', //判断当前客户端版本是否支持指定JS接口  
								// 'onMenuShareAppMessage', //分享接口  
								// 'getLocation', //获取位置  
								// 'openLocation', //打开位置  
								'scanQRCode', //扫一扫接口  
								'chooseWXPay', //微信支付  
								// 'chooseImage', //拍照或从手机相册中选图接口  
								// 'previewImage', //预览图片接口  
								// 'uploadImage' //上传图片  
							], // 必填，需要使用的JS接口列表
							// openId: t_openid
						});
						jweixin.ready(function() {
							console.log('jweixin.ready');
							// this.wxopenid()
						});
						jweixin.error(function(res) {
							console.log('jweixin.error', res);
							// config信息验证失败会执行error函数，如签名过期导致验证失败，具体错误信息可以打开config的debug模式查看，也可以在返回的res参数中查看，对于SPA可以在这里更新签名。
							/*alert("config信息验证失败");*/
						});
					}
				})
			},

			wxcode() {
				let local = window.location.href
				console.log(local);
				uni.request({
					url: 'http://www.huanlegougs.com/api.php/Test3/getcode',
					// data: {
					// 	current_url: encodeURIComponent(local)
					// },
					success: (res) => {
						console.log(res);
						let appid = res.data.data
						let url = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=' + appid +
							'&redirect_uri=' + encodeURIComponent(local) +
							'&response_type=code&scope=snsapi_base&state=1#wechat_redirect';
						console.log(url);
						window.location.href = url
					}
				})
			},
			wxopenid() {
				uni.request({
					url: 'http://www.huanlegougs.com/api.php/Test3/getopenid',
					data: {
						code: this.code
					},
					success: (res) => {
						console.log('openid', res);
						this.openid = res.data.data.openid
					}
				})
			},
			is_wx() {
				let en = window.navigator.userAgent.toLowerCase()
				// 匹配en中是否含有MicroMessenger字符串
				if (en.match(/MicroMessenger/i) == 'micromessenger') {
					alert("在微信", 11111)
				}
				if (en.match(/MicroMessenger/i) != 'micromessenger') {
					alert("不在微信", 2222)
				}
			},
			wxpay() {
				uni.request({
					url: 'http://www.huanlegougs.com/api.php/Test3/wx',
					data: {
						code: this.code,
						openid: this.openid
					},
					success: (res) => {
						console.log(res);
						var param = JSON.parse(res.data.data.param)
						var appid = res.data.data.appid

						jweixin.ready((suc) => {
							console.log(suc);
							jweixin.chooseWXPay({
								timestamp: param
									.timeStamp, // 支付签名时间戳，注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
								nonceStr: param.nonceStr, // 支付签名随机串，不长于 32
								package: param
									.package, // 统一支付接口返回的prepay_id参数值，提交格式如：prepay_id=\*\*\*）
								signType: param.signType, // 签名方式，默认为'SHA1'，使用新版支付需传入'MD5'
								paySign: param.paySign, // 支付签名
								success: function(data) {
									// 支付成功后的回调函数
									console.log(data);
								},
								cancel: function(data1) {
									uni.showToast({
										title: "付款失败！",
										duration: 1000
									})

								},
								fail: function(data2) {
									uni.showToast({
										title: "付款失败！",
										duration: 1000
									})

								}
							})
						})

					}
				})
			}
		}
	}
</script>

<style lang="scss">

</style>